Computer systems describe the physical location of data in memory using physical addresses. The physical address points directly to data stored on a memory chip. Multiple memory chips make up a local memory of a computer system that is limited in size. However, the amount of data the computer system can handle is much larger. A different type of address, called a virtual address is used to uniquely identify the larger amount of data. For the computer system to use this data, it must be stored in the local memory. The computer system uses a virtual address translation mechanism to determine where to locally store data represented by a virtual address.
Real-time operating systems of computer systems have a translation mechanism to map virtual addresses to physical addresses and to ascertain access rights. The number of physical addresses available is usually hardware constrained to a limited number of active memory blocks. Whenever an access is performed to a block that is not present in a hardware register set, then an interrupt occurs. An interrupt routine must determine if the memory block being requested is valid, and reload the hardware register set to replace an existing block such that the new block is enabled. The time to resolve these addresses during the interrupt routine is generally excessive.
One prior method of translating virtual address to real or physical addresses utilized a series of three tables. In this method, a portion of the virtual address points to a first table having multiple entries. The entry pointed to is combined with further bits point to a second table. The second table has an entry which is combined with still further bits to point to an entry in a third table. The entry is a two word entry with the real address. This method takes five reads to decode the address using three tables and two words.